Research
Security News
Threat Actor Exposes Playbook for Exploiting npm to Build Blockchain-Powered Botnets
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
es6-arrow-function
Advanced tools
Compiles JavaScript written using arrow functions to use ES5-compatible function syntax. For example, this:
[1, 2, 3].map(n => n * 2);
compiles to this:
[1, 2, 3].map(function(n) { return n * 2; });
For more information about the proposed syntax, see the TC39 wiki page on arrow functions.
$ npm install es6-arrow-function
$ node
> var compile = require('es6-arrow-function').compile;
[Function]
Without arguments:
> compile('$(() => main());').code;
'$(function() { return main(); });'
With a single argument:
> compile('[1, 2, 3].map(n => n * 2);').code;
'[1, 2, 3].map(function(n) { return n * 2; });'
With multiple arguments:
> compile('[1, 2, 3].map((n, i) => n * i);').code;
'[1, 2, 3].map(function(n, i) { return n * i; });'
It binds the current context:
> compile('stream.on("data", d => this.data += d);').code;
'stream.on("data", (function(d) { return this.data += d; }).bind(this));'
Or work directly with the AST:
$ cat ast.json
{
"type": "Program",
"body": [
{
"type": "ExpressionStatement",
"expression": {
"type": "CallExpression",
"callee": {
"type": "Identifier",
"name": "$"
},
"arguments": [
{
"type": "ArrowFunctionExpression",
"id": null,
"params": [],
"defaults": [],
"body": {
"type": "CallExpression",
"callee": {
"type": "Identifier",
"name": "main"
},
"arguments": []
},
"rest": null,
"generator": false,
"expression": true
}
]
}
}
]
}
$ node
> var transform = require('es6-arrow-function').transform;
[Function]
> console.log(JSON.stringify(transform(require('./ast.json')), null, 2));
{
"type": "Program",
"body": [
{
"type": "ExpressionStatement",
"expression": {
"type": "CallExpression",
"callee": {
"type": "Identifier",
"name": "$"
},
"arguments": [
{
"type": "FunctionExpression",
"id": null,
"params": [],
"defaults": [],
"body": {
"type": "BlockStatement",
"body": [
{
"type": "ReturnStatement",
"argument": {
"type": "CallExpression",
"callee": {
"type": "Identifier",
"name": "main"
},
"arguments": []
}
}
]
},
"rest": null,
"generator": false,
"expression": false
}
]
}
}
]
}
If installing via npm
a command line tool will be available called es6-arrow-function
.
$ echo "()=>123" | es6-arrow-function
(function () {
return 123;
});
$ es6-arrow-function $file
(function () {
return 123;
});
Browserify support is built in.
$ npm install es6-arrow-function # install local dependency
$ browserify -t es6-arrow-function $file
// BOILERPLATE
(function () {
return 123;
});
First, install the development dependencies:
$ npm install
Then, try running the tests:
$ npm test
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)Any contributors to the master es6-arrow-function repository must sign the Individual Contributor License Agreement (CLA). It's a short form that covers our bases and makes sure you're eligible to contribute.
When you have a change you'd like to see in the master repository, send a pull request. Before we merge your request, we'll make sure you're in the list of people who have signed a CLA.
FAQs
Shorthand arrow functions compiled to ES5.
We found that es6-arrow-function demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A threat actor's playbook for exploiting the npm ecosystem was exposed on the dark web, detailing how to build a blockchain-powered botnet.
Security News
NVD’s backlog surpasses 20,000 CVEs as analysis slows and NIST announces new system updates to address ongoing delays.
Security News
Research
A malicious npm package disguised as a WhatsApp client is exploiting authentication flows with a remote kill switch to exfiltrate data and destroy files.